package com.ella.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Slf4j
@Configuration //配置类
/**
 * @EnableWebMvc
 * 在spring boot中如果定义了自己的java配置文件，并且在文件上使用了@EnableWebMvc 注解，
 * 那么sprig boot 的默认配置就会失效。如默认的静态文件配置路径："classpath:/META-INF/resources/",
 * "classpath:/resources/", "classpath:/static/", "classpath:/public/"，将失效。
 * 而有效的配置将只有自己写的java配置 。
 */
@EnableSwagger2
@EnableKnife4j
public class WebMvcConfig extends WebMvcConfigurationSupport {

	/**
	 *  mvc框架消息转换器对象
	 * @param converters
	 */
/*
	@Override
	protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
		//创建消息转换器对象
		// TODO 注意不能写成MappingJackson2CborHttpMessageConverter这个类了;
		MappingJackson2HttpMessageConverter messageConverter=new MappingJackson2HttpMessageConverter();
		//设置转换器，底层使用jackson将java对象装换成json
		messageConverter.setObjectMapper(new JsonMapper());
		//将上面的消息转换器对象追加到mvc框架的消息集合中->加载时优先使用index为0的转换器
		converters.add(0,messageConverter);
	}
*/


	/**
	 * 配置swagger接口文档
	 *
	 */
	@Bean
	public Docket createRestApi() {
		// 文档类型
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.ella.controller"))
				.paths(PathSelectors.any())
				.build();
	}
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("瑞吉外卖")
				.version("1.0")
				.description("瑞吉外卖接口文档")
				.build();
	}

}
